#include <bits/stdc++.h>
#define int long long 
using namespace std;

const int maxn = 105;
const int p = 1e6 + 7;
int dp[maxn][maxn]; // [i][j], 表示到 第 i 种花, 到 第 j 个位置为止, 总共方案数, 但是 i 也可以不放, 也就是不易i的那个非得以 i种花结尾
int arr[maxn];
int n, m;
void solve(){
	cin >> n >> m;
	for (int i=1;i<=n;i++) {
		cin >> arr[i];
	}
	dp[0][0] = 1;
	for (int i=1;i<=n;i++) {
		for (int j=1;j<=m;j++) {
			for (int k=0;k<=arr[i];k++) {
				if (j >= k) {
					dp[i][j] = (dp[i][j] + dp[i-1][j-k]) % p;	
				}
			}
		}
	}
	
	cout << dp[n][m] << '\n';
}


signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	solve();
	return 0;
}
